<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //  简单理解: 闭包 = 内层函数 + 外层函数的变量
        //  作用:扩展局部变量的作用范围

        // 1.体验语法
        // function outer(){
        //     let num = 123
        //     function inner(){
        //         console.log(num);
        //     }
        //     inner () //调用函数
        //     console.log(num);
        // }
        // outer()

        // 2.作用:扩展局部变量的作用范围
        function fn(){
            let num = 0 ;
            // 谁调用我,我就让谁回答问题
            return function(){
                console.log(`第${++num}次让我回答问题`);
            }
        }

        // 测试1:小明想知道自己被点名多少次了
        const f1 = fn();
        f1();
        f1()
        f1()

        // 测试2:小红想知道自己被点名多少次了
        const f2 = fn()
        f2()
        f2()

        // 测试3:小王想知道自己被点名多少次了
        const f3 = fn()
        f3()
        f3()
        f3()


        // 一般不使用闭包
    </script>
</body>
</html>